//
// Created by ziya on 2021/9/3.
//

#include "../common.h"

#include <pthread.h>

//int main() {
//    char action[20];
//
//    INFO_PRINT("请输入锁类型: \n");
//    INFO_PRINT("\t 1) normal 抢不到锁就阻塞 \n");
//    INFO_PRINT("\t 2) recursive 支持重入 \n");
//    INFO_PRINT("\t 3) error 抢不到锁就报错 \n");
//
//    cin >> action;
//
//    // 创建与初始化互斥锁属性
//    pthread_mutexattr_t mutexattr;
//    pthread_mutexattr_init(&mutexattr);
//
//    if (0 == strcmp("normal", action)) {
//        pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_NORMAL);
//    } else if (0 == strcmp("recursive", action)) {
//        pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE);
//    } else if (0 == strcmp("error", action)) {
//        pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_ERRORCHECK);
//    } else {
//        ERROR_PRINT("无法失败的操作: %s\n", action);
//
//        exit(-1);
//    }
//
//    pthread_mutex_t lock;
//
//    // 初始化锁
//    pthread_mutex_init(&lock, &mutexattr);
//
//    // 上锁两次看效果
//    if (0 == pthread_mutex_lock(&lock)) {
//        INFO_PRINT("#1 lock success\n");
//    } else {
//        INFO_PRINT("#1 lock fail\n");
//    }
//
//    if (0 == pthread_mutex_lock(&lock)) {
//        INFO_PRINT("#1 lock success\n");
//    } else {
//        INFO_PRINT("#1 lock fail\n");
//    }
//
//    pthread_mutex_unlock(&lock);
//    pthread_mutex_unlock(&lock);
//
//    // 销毁锁
//    pthread_mutex_destroy(&lock);
//
//    pthread_mutexattr_destroy(&mutexattr);
//
//    return 0;
//}